/**
 * 描述:ShardingSphere以及分库分表的一些理解
 *  1.分库分表带来的问题
 *      1.主键重复问题：雪花算法、发号机器
 *      2.公共表处理：比如字典表的处理，是公用的，不能进行拆分
 *      3.分布式事务一致性：两阶段，三阶段，seata，最终一致性，同步双写和异步对账，消息事务，本地消息表
 *      4.跨节点关联查询：可能造成内存崩溃
 *      5.跨节点分页、排序函数：
 *  2.sharding-jdbc如何分库分表
 *      1.单库分表
 *          1.先定义单库的数据源
 *          2.配置分布式主键的策略，一般有uui，或者雪花算法，或者通过spi自定义
 *          3.自定义分片算法配置，需要配置 = 或者 in 的分片 还有 between 和 and 的分片，如果不配置，则走全库路由
 *          4.配置每个表的数据节点规则，比如表的后面带了1或者2这样，可以通过一个表达式去配
 *          5.配置每个表的分片算法和分片的列的字段名称
 *      2.多库分表
 *          1.先定义多库的数据源
 *          2.多库的查找是通过负载均衡算法的，定义负载均衡算法和主库从库
 *          3.自定义分片算法的配置
 *          4.定义数据落在哪个库，一般用取模的方式
 *          5.用一种表达式来配置数据具体落到哪个节点的哪个表上
 *          6.配置分库策略和分表策略
 *  3.原理：https://blog.csdn.net/roykingw/article/details/112538609
 *      1.连接模式：根据一个spring.shardingsphere.props.max.connections.size.per.query配置
 *          1.内存限制模式：不限制连接数，也就是说会建立多个数据连接，然后并发控制每个连接只去读取一个数据分片的数据。这样可以最快速度的把所有需要的数据读出来
 *            并且在后面的归并阶段，会选择以每一条数据为单位进行归并，就是后面提到的流式归并。这种归并方式归并完一批数据后，可以释放内存了，可以很好的提高数据归并的效率，
 *            并且防止出现内存溢出或垃圾回收频繁的情况。他的吞吐量比较大，比较适合OLAP场景。
 *          2.连接限制模式：会对连接数进行限制，至少有一个数据库连接会要去读取多个数据分片的数据。这样他会对这个数据库连接采用串行的方式依次读取多个数据分片的数据。
 *            会将数据全部读入到内存，进行统一的数据归并，也就是后面提到的内存归并。这种方式归并效率会比较高，例如一个MAX归并，直接就能拿到最大值，而流式归并就需要一条条的比较。
 *            比较适合OLTP场景
 *          3.可以通过配置spring.shardingsphere.props.max.connections.size.per.query的大小，来优化sql的查询
 *
 * @author Madison You
 * @created 11:38
 */
public class ShardingSphere {
}
